Image editing computer applications perform various image enhancement operations on static or video images. Such image enhancement operations generally involve adjusting images so that the results are more suitable for display or further image analysis. Image enhancement can involve removing noise, sharpening an image or portions of an image, or brightening an image or portions of an image. Image enhancement may take an input image and adjust the individual pixel values (color characteristics) using one or more transformation functions to produce an output image with desired improvements. Image enhancement may add or remove noise from an image, remove unwanted elements, selectively change colors, change image orientation, distort or transform the shape of an image, correct images for lens distortions, make the image lighter or darker, change contrast, apply filters, merge images, change color depth, change contrast and brightness, etc. For example, an image editor can be used to increase the resolution of an images, decrease a level of noise present in the image, and/or decrease an amount of blurring of the image.
Existing image editing computer applications generally enhance images by determining patch updates for multiple patches of the image and then aggregating those patch updates to determine how to update the pixel values of the images. Existing patch aggregation techniques compute pixel update values on a patch-by-patch basis. Such patch-based aggregation techniques cannot be executed in parallel because doing so could result in conflicts when patches attempt to access the same pixel data at the same time. For example, if a given pixel is associated with two patches, executing patch aggregation processes for each of the patches at the same time impermissibly update that pixel at the same time.